[JG_Arrow_AutoMerge.exe 사용법]

1. ZIP을 원하는 작업 폴더에 완전히 압축 해제합니다. 가능하면 대상 *.mpq\data 바깥의 별도 폴더를 권장합니다.
2. JG_Arrow_AutoMerge.exe를 실행합니다.
3. [검사]를 눌러 EXE 옆 data 원본을 먼저 검사합니다.
4. 대상 폴더에 기존 D2R 데이터모드의 다음 중 하나를 지정합니다.
   - 모드 루트 폴더
   - *.mpq 폴더
   - *.mpq\data 폴더
5. 기반 D2RMM과 동일한 전역옵션 5개를 원하는 상태로 선택합니다.
6. [설치]를 누르면 대상 구조와 현재 옵션을 다시 검사한 뒤 스마트 병합 계획을 만듭니다.
7. 확인창에서 진행하면 설치 전 backups 폴더에 BeforeInstall 백업을 만든 뒤 설치합니다.

전역옵션 - 기반 D2RMM과 동일, 기본값 모두 ON
(설치기 화면에 D2RMM 원본 옵션명과 설명을 함께 표시합니다.)
- (액트1) 지하 묘지 2층 WP → 3층
- (액트3) 증오의 사원 2층 WP → 메피스토 (3층)
- (액트4) 불길의 강 (통과방향)
- (액트5) 고통의 전당 WP → 보트의 전당
- (액트5) 세계석 성채 2층 WP → 3층

옵션 수렴 방식
- ON: 현재 대상 JSON을 기준으로 해당 기능의 JG 소유 화살표와 필요한 dependency만 갱신합니다.
- OFF: 이전 설치로 남아 있는 해당 기능의 JG 소유 화살표/dependency만 정리합니다.
- OFF 상태에서 대상 공유 JSON이 원래 없으면 새 파일을 만들지 않습니다.
- 불길의 강 OFF 시 JG 전용 bridge prefab도 정리합니다.
- 모든 화살표 옵션 OFF 시 JG directionarrows 전용 자산도 정리합니다.
- 구형 일반 arrow_up 전용 자산이 남아 있으면 자동 정리합니다.
- 다른 모드가 추가한 엔티티와 계약 밖 JSON 데이터는 유지합니다.

병합 방식
- 공유 preset JSON 19개: 현재 대상 JSON을 기준으로 옵션별 JG 소유 부분만 스마트 병합/정리합니다.
- 옵션 ON 상태에서 대상 공유 JSON이 없으면 ZIP의 현재 완성본을 기반으로 생성합니다.
- directionarrows 8개와 불길의 강 전용 prefab 4개는 JG 전용 경로로 관리합니다.
- 같은 옵션 조합을 반복 설치해도 JG 화살표가 중복되지 않도록 수렴형으로 처리합니다.

백업 / 복구
- 백업 위치: EXE 옆 backups\
- [백업 새로고침]은 대상 경로 입력 여부와 관계없이 같은 설치기 계열의 정상 백업을 검사합니다.
- [선택 백업 복구] 시 현재 대상 dataRoot와 백업 dataRoot가 정확히 같은지 다시 확인합니다.
- 복구 직전 현재 상태도 BeforeRestore로 다시 백업합니다.
- 주의: 선택한 백업 이후 같은 파일에 적용한 다른 모드의 수정도 함께 되돌아갑니다.

안전 동작
- 설치 원본과 대상이 상하위 폴더 관계여도 실제 계약 파일 경로가 충돌하지 않으면 계속 진행합니다.
- 설치 원본 data와 대상 data가 정확히 같거나 실제 계약 파일 경로가 충돌하면 중단합니다.
- ZIP의 data를 기존 대상 data에 직접 덮어쓴 뒤 자동병합기를 실행하는 방식은 금지합니다. 이미 타 모드 파일을 덮어썼을 가능성을 안전하게 복구할 수 없기 때문입니다.
- 설치 원본 session fingerprint 재검사
- target 동시 변경 감지
- 설치기 / 대상 mutex
- 백업 SHA-256 검증
- 임시파일 기반 atomic write
- 설치 중 실패 시 BeforeInstall 백업으로 자동 롤백
- 위험한 symlink / junction / reparse 경로 차단

UI
- 맑은 고딕(Malgun Gothic) 일반 Windows UI 크기 사용
- Unicode W API 사용
- Windows 기본 시스템색 사용
- 설명문/옵션명이 잘리지 않도록 충분한 폭과 높이 확보

이 설치기는 기존 MPQ/data 데이터모드에 병합하는 용도입니다.
새 데이터모드 루트나 modinfo.json을 임의 생성하지 않습니다.
